package com.speaktoitcookbook.dao.factory;

import com.speaktoitcookbook.dao.ICollectionDao;
import com.speaktoitcookbook.dao.ICommentDao;
import com.speaktoitcookbook.dao.ICookbookDao;
import com.speaktoitcookbook.dao.IDishStepDao;
import com.speaktoitcookbook.dao.IFeedbackDao;
import com.speaktoitcookbook.dao.IMaterialDao;
import com.speaktoitcookbook.dao.IThirdAccountDao;
import com.speaktoitcookbook.dao.IUserDao;
import com.speaktoitcookbook.dao.IUserInfoDao;
import com.speaktoitcookbook.dao.proxy.CollectionDaoProxy;
import com.speaktoitcookbook.dao.proxy.CommentDaoProxy;
import com.speaktoitcookbook.dao.proxy.CookbookDaoProxy;
import com.speaktoitcookbook.dao.proxy.DishStepDaoProxy;
import com.speaktoitcookbook.dao.proxy.FeedbackDaoProxy;
import com.speaktoitcookbook.dao.proxy.MaterialDaoProxy;
import com.speaktoitcookbook.dao.proxy.ThirdAccountDaoProxy;
import com.speaktoitcookbook.dao.proxy.UserDaoProxy;
import com.speaktoitcookbook.dao.proxy.UserInfoDaoProxy;

/**
 * 简单工厂类，外部使用者调用该类的相关静态方法获得相关数据操作对象
 * 
 * @author 杨强
 * 
 */
public class DaoFactory {

    /**
     * 构造一个用户帐号数据库操作对象
     * 
     * @return 用户帐号数据操作对象
     */
    public static IUserDao getUserDao() {
        return new UserDaoProxy();
    }

    /**
     * 构造一个用户个人信息数据库操作对象
     * 
     * @return 用户个人信息数据操作对象
     */
    public static IUserInfoDao getUserInfoDao() {
        return new UserInfoDaoProxy();
    }

    /**
     * 构造一个菜谱数据库操作示例对象
     * 
     * @return 菜谱数据操作对象
     */
    public static ICookbookDao getCookbookDao() {
        return new CookbookDaoProxy();
    }

    /**
     * 构造一个菜谱收藏数据库操作对象
     * 
     * @return 菜谱收藏数据操作对象
     */
    public static ICollectionDao getCollectionDao() {
        return new CollectionDaoProxy();
    }

    /**
     * 构造一个菜谱评论数据库操作对象
     * 
     * @return 菜谱评论数据操作对象
     */
    public static ICommentDao getCommentDao() {
        return new CommentDaoProxy();
    }

    /**
     * 构造一个用户反馈数据库操作对象
     * 
     * @return 反馈数据操作对象
     */
    public static IFeedbackDao getFeedbackDao() {
        return new FeedbackDaoProxy();
    }

    /**
     * 构造一个第三方账号数据库操作对象
     * 
     * @return 第三方账号数据操作对象
     */
    public static IThirdAccountDao getThirdAccountDao() {
        return new ThirdAccountDaoProxy();
    }

    /**
     * 构造一个菜谱步骤数据库操作对象
     * 
     * @return 菜谱步骤数据操作对象
     */
    public static IDishStepDao getDishStepDao() {
        return new DishStepDaoProxy();
    }

    /**
     * 构造一个菜谱原料数据库操作对象
     * 
     * @return 菜谱原料数据库操作实例
     */
    public static IMaterialDao getMaterialDao() {
        return new MaterialDaoProxy();
    }
}
